직렬화(Serialization)
✒️ 2025-05-15 13:28 내용 수정
자바 시스템 내부에서 사용하는 객체나 데이터를 외부의 시스템에서 사용할 수 있도록 바이트(byte) 단위의 데이터로 변환 시키는 기술
- 클래스 형태의 데이터를 바이트 단위로 변환하는 것
- 역직렬화 : 바이트 단위로 변환된 데이터를 다시 객체 형태로 변환하는 것
- SerialIzable 인터페이스를 구현해서 사용한다.
- serialVersionUID
- 객체를 직렬화 또는 역직렬화할 때 서로 값이 맞는지 확인하는 기준이 되는 값
- 직렬화 과정에서 해당 값이 변경되면 InvalidClassException이 발생한다.
- 예외와 에러 참고.
- 필수 값이 아니므로 지정하지 않는다면 클래스의 해시 값을 사용한다.
- 개발자가 값을 직접 지정할 수 있다.
public class Test implements Serializable {
private static fianl long serialVersionUID = 1L;
}
- 객체 보조 스트림 : Serializable을 상속한 객체를 직렬화하여 전달하기 위해 사용하는 보조 스트림
- ObjectOutputStream : 직렬화, 객체를 저장하기 위해 사용
- ObjectInputStream : 역직렬화, 객체를 읽기 위해 사용